<template>
	<div class="wrapper">

		<!-- header部分 -->
		<header>
			<div class="go-back"><i class="fa fa-reply" @click="goback"></i></div>
			<p>确认订单</p>
		</header>

		<!-- 订单信息部分 -->
		<div class="order-info">
			<h5>订单配送至：</h5>
			<div class="order-info-address" @click="toUserAddress">
				<p>{{deliveryaddress!=null?deliveryaddress.address:'请选择送货地址'}}</p>
				<i class="fa fa-angle-right"></i>
			</div>
			<p>{{deliveryaddress.contactName}}{{sexFilter(deliveryaddress.contactSex)}} {{deliveryaddress.contactTel}}</p>
		</div>

		<h3>{{business.businessName}}</h3>

		<!-- 订单明细部分 -->
		<ul class="order-detailed">
			<li v-for="item in cartArr">
				<div class="order-detailed-left">
					<img :src="item.food.foodImg">
					<p>{{item.food.foodName}} x {{item.quantity}}</p>
				</div>
				<p>&#165;{{(item.food.foodPrice*item.quantity).toFixed(2)}}</p>
			</li>
		</ul>
		<div class="order-deliveryfee">
			<p>配送费</p>
			<p>&#165;{{business.deliveryPrice}}</p>
		</div>
		
		<ul class="Coupon">
			<li v-for="item in CouponArr">
				<div class="CouponInfo">
					<div class="coupon-header">
						<h2 style="color:white;font-size: 6vw;">{{item.couponName}}</h2>
						<p style="color:white;font-size: 3vw;margin-top:1vw;">期限：{{item.remark}}</p>
					</div>
					<div style="margin-left: auto;margin-right: 8vw;" class="coupon-body">
						<p style="color:#e93030;font-size: 7vw;" v-if="item.couponId<9">&#165;{{item.discount}}</p>
						<p style="color:#333;padding:1vw;background-color: rgba(255, 255, 255, 0.2);border-radius: 6vw;font-size: 3vw;"
						 v-if="item.couponId<5">满{{item.threshold}}可用</p>
					</div>
					<div @click="toSelectCoupon(item.couponId)" style="display: flex;width:4vw; justify-content: center;align-items: center;"
					 class="coupon-button">
						<p v-if="Couponselected!=item.couponId" style="right: 0;font-size:4vw;color:#333">使用</p>
						<p v-if="Couponselected==item.couponId" style="right: 0;font-size:4vw;color:red">已选</p>
					</div>
				</div>
			</li>
		</ul>

		<div style="height : 12vw;"></div>

		<!-- 合计部分 -->
		<div class="total">
			<div class="total-left">
				&#165;{{totalPrice}}
				<p v-show="Sale!=0" style="color:#ff3434;margin-left:1vw;font-size:5vw;">-&#165;{{Sale.toFixed(2)}}</p>
			</div>
			<div class="total-right" @click="toPayment">
				去支付
			</div>
		</div>
	</div>
</template>

<script>
	export default {
		name: 'Orders',
		data() {
			return {
				businessId: this.$route.query.businessId,
				business: {},
				user: {},
				cartArr: [],
				deliveryaddress: {},
				CouponArr: [],
				Couponselected: 0,
				Sale: 0,
			}
		},
		created() {
			this.user = this.$getSessionStorage('user');
			this.deliveryaddress = this.$getLocalStorage(this.user.userId);

			//查询当前商家
			let businessUrl = `BusinessController/getBusinessById/${this.businessId}`;
			this.$axios
				.get(businessUrl)
				.then((response) => {
					this.business = response.data.result;
				})
				.catch((error) => {
					console.error(error);
				});
			//查询当前用户在购物车中的当前商家食品列表
			let cartUrl = `CartController/listCart/${this.user.userId}/${this.businessId}`;
			this.$axios
				.get(cartUrl)
				.then((response) => {
					this.cartArr = response.data.result;
				})
				.catch((error) => {
					console.error(error);
				});
		},
		computed: {
			totalPrice() {
				let totalPrice = 0;
				for (let cartItem of this.cartArr) {
					totalPrice += cartItem.food.foodPrice * cartItem.quantity;
				}
				totalPrice += this.business.deliveryPrice;
				return totalPrice.toFixed(2);
			}
		},
		watch: {
			totalPrice(newVal) {
				this.toCouponArr();
			}
			// totalPrice: {
			//     handler(newVal, oldVal) {
			//       this.toCouponArr();
			//     },
			//     immediate: true, // 初始化时立即执行一次
			//     deep: true,      // 如果 totalPrice 是对象/数组，需要深度监听
			//   },
		},
		methods: {
			toSelectCoupon(couponId) {
				this.Couponselected = couponId;
				if (couponId == 1) {
					this.Sale = 8;
				} else if (couponId == 2) {
					this.Sale = 20;
				} else if (couponId == 3) {
					this.Sale = 35;
				} else if (couponId == 4) {
					this.Sale = 50;
				} else if (couponId == 5) {
					this.Sale = Math.min(1, this.totalPrice);
				} else if (couponId == 6) {
					this.Sale = Math.min(5, this.totalPrice);
				} else if (couponId == 7) {
					this.Sale = Math.min(10, this.totalPrice);
				} else if (couponId == 8) {
					this.Sale = Math.min(20, this.totalPrice);
				} else if (couponId == 9) {
					this.Sale = Math.min(30, (this.totalPrice * 0.2));
				} else if (couponId == 10) {
					this.Sale = Math.min(45, (this.totalPrice * 0.25));
				} else {
					this.Sale = 0;
				}
			},
			sexFilter(sex) {
				return sex == 1 ? '先生' : '女士';
			},
			toUserAddress() {
				this.$router.push({
					path: '/userAddress',
					query: {
						businessId: this.businessId
					}
				});
			},
			toCouponArr() {
				let couponUrl = `CouponController/listCouponByAmount/${this.user.userId}/${this.totalPrice}`;
				this.$axios
					.get(couponUrl)
					.then((response) => {
						this.CouponArr = response.data.result;
					})
					.catch((error) => {
						console.error(error);
					});
			},
			toPayment() {
				if (this.deliveryaddress == null) {
					alert('请选择送货地址！');
					return;
				}

				//创建订单
				this.token = this.$getSessionStorage("token");
				let url =
					`OrdersController/createOrders/${this.user.userId}/${this.businessId}/${this.deliveryaddress.daId}/${this.totalPrice}/${this.Sale}`;
				this.$axios.post(url).then((response) => {
						let orderId = response.data.result;
						if (orderId > 0) {
							this.$router.push({
								path: "/payment",
								query: {
									orderId: orderId
								},
							});
						} else {
							alert("创建订单失败!");
						}
					})
					.catch((error) => {
						console.error(error);
					});
			},
			goback() {
				this.$router.go(-1);
			}
		}
	}
</script>

<style scoped>
	/****************** 总容器 ******************/
	.wrapper {
		width: 100%;
		height: 100%;
	}

	/****************** header部分 ******************/
	.wrapper header {
		width: 100%;
		height: 12vw;
		background-color: #0097FF;
		color: #fff;
		font-size: 4.8vw;

		position: fixed;
		left: 0;
		top: 0;
		z-index: 1000;

		display: flex;
		/*justify-content: center;*/
		align-items: center;
	}

	.wrapper header .go-back {
		padding: 0 32vw 0 2vw;
	}

	.wrapper .Coupon li .CouponInfo {
		width: 92%;
		height: 20%;
		border-radius: 15px;
		background: linear-gradient(to right, #e94747, #ffe1e1);
		margin-bottom: 2vw;
		padding: 15px;
		display: flex;
		justify-content: space-between;
	}

	.wrapper .Coupon li .CouponInfo .coupon-body {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
	}

	/****************** 订单信息部分 ******************/
	.wrapper .order-info {
		/*注意这里，不设置高，靠内容撑开。因为地址有可能折行*/
		width: 100%;
		margin-top: 12vw;
		background-color: #0097EF;
		box-sizing: border-box;
		padding: 2vw;
		color: #fff;
	}

	.wrapper .order-info h5 {
		font-size: 3vw;
		font-weight: 300;
	}

	.wrapper .order-info .order-info-address {
		width: 100%;
		display: flex;
		justify-content: space-between;
		align-items: center;

		font-weight: 700;
		user-select: none;
		cursor: pointer;
		margin: 1vw 0;
	}

	.wrapper .order-info .order-info-address p {
		width: 90%;
		font-size: 5vw;
	}

	.wrapper .order-info .order-info-address i {
		font-size: 6vw;
	}

	.wrapper .order-info p {
		font-size: 3vw;
	}

	.wrapper h3 {
		box-sizing: border-box;
		padding: 3vw;
		font-size: 4vw;
		color: #666;
		border-bottom: solid 1px #DDD;
	}

	/****************** 订单明细部分 ******************/
	.wrapper .order-detailed {
		width: 100%;
	}

	.wrapper .order-detailed li {
		width: 100%;
		height: 16vw;
		box-sizing: border-box;
		padding: 3vw;
		color: #666;

		display: flex;
		justify-content: space-between;
		align-items: center;
	}

	.wrapper .order-detailed li .order-detailed-left {
		display: flex;
		align-items: center;
	}

	.wrapper .order-detailed li .order-detailed-left img {
		width: 10vw;
		height: 10vw;
	}

	.wrapper .order-detailed li .order-detailed-left p {
		font-size: 3.5vw;
		margin-left: 3vw;
	}

	.wrapper .order-detailed li p {
		font-size: 3.5vw;
	}

	.wrapper .order-deliveryfee {
		width: 100%;
		height: 16vw;
		box-sizing: border-box;
		padding: 3vw;
		color: #666;
		display: flex;
		justify-content: space-between;
		align-items: center;
		font-size: 3.5vw;
	}

	/****************** 订单合计部分 ******************/
	.wrapper .total {
		width: 100%;
		height: 14vw;

		position: fixed;
		left: 0;
		bottom: 0;

		display: flex;
	}

	.wrapper .total .total-left {
		flex: 2;
		background-color: #505051;
		color: #fff;
		font-size: 4.5vw;
		font-weight: 700;
		user-select: none;

		display: flex;
		justify-content: center;
		align-items: center;
	}

	.wrapper .total .total-right {
		flex: 1;
		background-color: #38CA73;
		color: #fff;
		font-size: 4.5vw;
		font-weight: 700;
		user-select: none;
		cursor: pointer;

		display: flex;
		justify-content: center;
		align-items: center;
	}
</style>
